package com.hello.system.domain;

import java.util.Date;
import com.fasterxml.jackson.annotation.JsonFormat;
import org.apache.commons.lang3.builder.ToStringBuilder;
import org.apache.commons.lang3.builder.ToStringStyle;
import com.hello.common.core.annotation.Excel;
import com.hello.common.core.web.domain.BaseEntity;
import lombok.Data;
import lombok.EqualsAndHashCode;

/**
 * 树洞内容对象 sd_tree_hole_entries
 * 
 * @author hello
 * @date 2025-05-15
 */
@Data
@EqualsAndHashCode(callSuper = true)
public class TreeHoleEntries extends BaseEntity
{
    private static final long serialVersionUID = 1L;

    /** 条目ID，主键，自增 */
    private Long entryId;

    /** 用户ID（允许匿名，可为空），关联系统用户表 */
    @Excel(name = "用户ID", readConverterExp = "允=许匿名，可为空")
    private Long userId;
    
    /** 用户昵称 */
    @Excel(name = "用户昵称")
    private String nickName;

    /** 内容，不能为空 */
    @Excel(name = "内容，不能为空")
    private String content;

    /** 可见性：私人树洞或公开圈子 */
    @Excel(name = "可见性：私人树洞或公开圈子")
    private String visibilityType;

    /** 在公开圈子中是否匿名，默认为否 */
    @Excel(name = "在公开圈子中是否匿名，默认为否")
    private Integer isAnonymousInPublic;

    /** 创建时间 */
    @JsonFormat(pattern = "yyyy-MM-dd")
    @Excel(name = "创建时间", width = 30, dateFormat = "yyyy-MM-dd")
    private Date createdAt;

    /** 更新时间 */
    @JsonFormat(pattern = "yyyy-MM-dd")
    @Excel(name = "更新时间", width = 30, dateFormat = "yyyy-MM-dd")
    private Date updatedAt;

    /** 点赞数，默认为0 */
    @Excel(name = "点赞数，默认为0")
    private Long likesCount;

    /** 不喜欢数，默认为0 */
    @Excel(name = "不喜欢数，默认为0")
    private Long dislikesCount;

    /** 评论数，默认为0 */
    @Excel(name = "评论数，默认为0")
    private Long commentsCount;
    
    /** 查看总数，默认为0 */
    @Excel(name = "查看总数，默认为0")
    private Long viewsCount;

    public void setEntryId(Long entryId) 
    {
        this.entryId = entryId;
    }

    public Long getEntryId() 
    {
        return entryId;
    }
    public void setUserId(Long userId) 
    {
        this.userId = userId;
    }

    public Long getUserId() 
    {
        return userId;
    }
    
    public void setNickName(String nickName) 
    {
        this.nickName = nickName;
    }

    public String getNickName() 
    {
        return nickName;
    }
    
    public void setContent(String content) 
    {
        this.content = content;
    }

    public String getContent() 
    {
        return content;
    }
    public void setVisibilityType(String visibilityType) 
    {
        this.visibilityType = visibilityType;
    }

    public String getVisibilityType() 
    {
        return visibilityType;
    }
    public void setIsAnonymousInPublic(Integer isAnonymousInPublic) 
    {
        this.isAnonymousInPublic = isAnonymousInPublic;
    }

    public Integer getIsAnonymousInPublic() 
    {
        return isAnonymousInPublic;
    }
    public void setCreatedAt(Date createdAt) 
    {
        this.createdAt = createdAt;
    }

    public Date getCreatedAt() 
    {
        return createdAt;
    }
    public void setUpdatedAt(Date updatedAt) 
    {
        this.updatedAt = updatedAt;
    }

    public Date getUpdatedAt() 
    {
        return updatedAt;
    }
    public void setLikesCount(Long likesCount) 
    {
        this.likesCount = likesCount;
    }

    public Long getLikesCount() 
    {
        return likesCount;
    }
    
    public void setDislikesCount(Long dislikesCount) 
    {
        this.dislikesCount = dislikesCount;
    }

    public Long getDislikesCount() 
    {
        return dislikesCount;
    }
    
    public void setCommentsCount(Long commentsCount) 
    {
        this.commentsCount = commentsCount;
    }

    public Long getCommentsCount() 
    {
        return commentsCount;
    }
    
    public void setViewsCount(Long viewsCount)
    {
        this.viewsCount = viewsCount;
    }
    
    public Long getViewsCount()
    {
        return viewsCount;
    }

    @Override
    public String toString() {
        return new ToStringBuilder(this,ToStringStyle.MULTI_LINE_STYLE)
            .append("entryId", getEntryId())
            .append("userId", getUserId())
            .append("nickName", getNickName())
            .append("content", getContent())
            .append("visibilityType", getVisibilityType())
            .append("isAnonymousInPublic", getIsAnonymousInPublic())
            .append("createdAt", getCreatedAt())
            .append("updatedAt", getUpdatedAt())
            .append("likesCount", getLikesCount())
            .append("dislikesCount", getDislikesCount())
            .append("commentsCount", getCommentsCount())
            .append("viewsCount", getViewsCount())
            .toString();
    }
}
